package com.ruixun.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruixun.common.PageData;
import com.ruixun.entity.SysPermission;
import com.ruixun.query.SysPermissionPageQuery;
import com.ruixun.rvo.PermissionStatsRvo;
import com.ruixun.rvo.SysPermissionRvo;

import java.util.List;

/**
 * 权限服务接口
 * @author ruixun
 */
public interface SysPermissionService extends IService<SysPermission> {

    /**
     * 分页查询权限列表
     * @param query 查询条件
     * @return 分页数据
     */
    PageData<SysPermissionRvo> getPermissionPage(SysPermissionPageQuery query);

    /**
     * 新增权限
     * @param permission 权限实体
     * @return 是否成功
     */
    boolean addPermission(SysPermission permission);

    /**
     * 修改权限
     * @param permission 权限实体
     * @return 是否成功
     */
    boolean updatePermission(SysPermission permission);

    /**
     * 删除权限
     * @param id 权限ID
     * @return 是否成功
     */
    boolean deletePermission(Long id);

    /**
     * 根据ID获取权限详情
     * @param id 权限ID
     * @return 权限信息
     */
    SysPermissionRvo getPermissionById(Long id);

    List<SysPermissionRvo> userMenu();

    PermissionStatsRvo stats();

    List<SysPermissionRvo> all();
}